<?php
def("amicitia/arquitectura/seguridad/excepciones/","SeguridadException");

/**
 * Excepción que se dispara cuando una petición de autorización sobre un
 * recurso es denegada.
 * 
 * @author Willy A. Kuster
 */
class AutorizacionException extends SeguridadException {

	private $urlRecurso;
	private $tipo;
	private $nivelRecurso;
	private $nivelActual;

	public function __construct($urlRecurso, $tipo, $nivelRecurso, $nivelActual, $message = "Autorización denegada sobre el recurso '%s' con privilegio de tipo '%s' y nivel '%s'. El nivel actual es '%s'", $code = 0, Exception $previous = null) {
		$this->urlRecurso = $urlRecurso;
		$this->tipo = $tipo;
		$this->nivelRecurso = $nivelRecurso;
		$this->nivelActual = $nivelActual;
		parent::__construct(sprintf($message, $urlRecurso, $tipo, $nivelRecurso, $nivelActual), $code, $previous);
	}

	public function getTipo(){
		return $this->tipo;
	}
	
	public function getNivelRecurso(){
		return $this->nivelRecurso;
	}
	
	public function getNivelActual(){
		return $this->nivelActual;
	}
	
	public function getUrlRecurso(){
		return $this->urlRecurso;
	}

}
?>